package com.example.wanzhende_fllutter_app

import android.webkit.WebSettings
import android.webkit.WebView
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel

/**
 * WebView 配置工具类
 * 
 * 用于配置 WebView 的跨域访问和本地文件访问权限
 * 解决 Flutter WebView 中访问 forbiddenWords.json 的问题
 */
class WebViewConfig {
    companion object {
        private const val CHANNEL = "com.example.wanzhende/webview_config"
        
        /**
         * 注册 Method Channel
         */
        fun registerWith(flutterEngine: FlutterEngine) {
            MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
                when (call.method) {
                    "configureWebView" -> {
                        // 这个方法保留给未来可能的需求
                        result.success("WebView configuration is handled automatically")
                    }
                    else -> {
                        result.notImplemented()
                    }
                }
            }
        }
        
        /**
         * 配置 WebView Settings 以允许本地文件访问和跨域
         * 
         * 注意：这个方法需要在 WebView 创建时调用
         * 但由于 Flutter WebView 的限制，我们通过反射来配置
         */
        fun configureWebViewSettings(webView: WebView) {
            val settings = webView.settings
            
            // 1. 允许访问本地文件
            settings.allowFileAccess = true
            
            // 2. 允许从 file:// URL 访问其他 file:// URL
            // 这是关键配置，让 HTML 能读取同目录的 JSON 文件
            settings.allowFileAccessFromFileURLs = true
            
            // 3. 允许从 file:// URL 进行跨域访问
            // 解决 CORS 跨域限制问题
            settings.allowUniversalAccessFromFileURLs = true
            
            // 4. 启用 JavaScript
            settings.javaScriptEnabled = true
            
            // 5. 允许 DOM Storage（localStorage 等）
            settings.domStorageEnabled = true
            
            // 6. 设置缓存模式
            settings.cacheMode = WebSettings.LOAD_DEFAULT
            
            // 7. 允许混合内容（HTTP 和 HTTPS）
            settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
            
            println("✅ WebView 配置完成:")
            println("   - allowFileAccess = ${settings.allowFileAccess}")
            println("   - allowFileAccessFromFileURLs = ${settings.allowFileAccessFromFileURLs}")
            println("   - allowUniversalAccessFromFileURLs = ${settings.allowUniversalAccessFromFileURLs}")
            println("   - javaScriptEnabled = ${settings.javaScriptEnabled}")
            println("   - domStorageEnabled = ${settings.domStorageEnabled}")
        }
    }
}

